home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: delta / whiteline CD Series - delta.iso / tex / tools / dvi_300b / treiber / sources / fast_dvi.s < prev    next >
Text File  |  1995-11-25  |  3KB  |  164 lines

  1. ;********************************************************************
  2. ;***    *Schnelle* Ausgabe von Zeichen im Hintergrund        *****
  3. ;********************************************************************
  4.  
  5. EXPORT    prn_byte, exstall, old_vec, CookieJar
  6. IMPORT    shm_name, Fdelete, Cconws, Supexec, Fselect
  7.  
  8.     TEXT
  9. ; **********************************************
  10. ; ****    Sucht nach CookieJar (für Dialoge)  ****
  11. Cook:    DC.L    0
  12. CookieJar:
  13.     MOVE.L    D0,    Cook
  14.     PEA    SearchCookie(PC)
  15.     MOVE    #38,    -(A7)
  16.     TRAP    #14
  17.     ADDQ.L    #6,    A7
  18.     MOVE.L    Cook,    D0
  19.     RTS
  20.  
  21. SearchCookie:
  22.     MOVE.L    $5A0,    D0
  23.     BLE    NoCookie
  24.     MOVE.L    D0,    A0
  25.     MOVE.L    Cook,    D0
  26. cl:    CMP.L    (A0),    D0
  27.     BEQ    YesCookie
  28.     TST.L    (A0)+
  29.     BEQ    NoCookie
  30.     ADDQ.L    #4,    A0
  31.     BRA    cl
  32. YesCookie:
  33.     MOVE.L    4(A0),    Cook
  34.     RTS
  35. NoCookie:
  36.     CLR.L    Cook
  37.     RTS
  38. ;****    30.1.92    ****
  39.  
  40.  
  41. ; **** Programm durch Signal gekillt! */
  42. exstall:
  43.     TST.L    ptr
  44.     BEQ    no_ex_
  45.     LEA    ex_print(PC),A0
  46.     BSR    Supexec
  47. no_ex_:    
  48. ;    LEA    shm_name,A0    ; Temporäre Datei wird z.Zt. nicht gelöscht!
  49. ;    BSR    Fdelete
  50.     LEA    killed,    A0
  51.     BSR    Cconws
  52.     CLR    -(A7)
  53.     TRAP    #1
  54.     RTS
  55.  
  56. ex_print:
  57.     CLR.L    anzahl
  58.     BCLR    #0,    $FFFFFA09.W    ; Ausschalten
  59.     BCLR    #0,    $FFFFFA15.W    ; Maskieren
  60.     MOVE.L    old_vec,$100.W
  61.     CLR.L    old_vec
  62.     RTS
  63.  
  64. /* Idee aus ST-Computer 5/92, sehr stark modifiziert */
  65. prn_byte:
  66.     MOVE.L    D0,    anzahl    ; Anzahl
  67.     BLE    no_print
  68.     MOVE.L    A0,    ptr
  69.     LEA    i_byte(PC),A0
  70.     BSR    Supexec
  71. no_print:RTS
  72.  
  73. ;* Interrupt installieren *
  74. i_byte:    BTST    #0,    $FFFFFA01.W
  75.     BEQ    i_b2        ; Nicht busy
  76.     MOVE.L    $0446.W,A0
  77.     ADDQ.L    #2,    A0
  78. .wait:    MOVE.L    $0466.W,D0    ; Timer nach D0
  79.     BTST    #0,    $FFFFFA01.W
  80.     BEQ    i_b2        ; Nicht busy
  81.     CMPA    D0,    A0    ; Noch warten?
  82.     BGE    .wait
  83.     RTS
  84.  
  85. i_b2:    LEA    xbra,    A0    ; Xbra-Routine bauen
  86.     MOVE.L    #'XBRA',(A0)+
  87.     MOVE.L    #'DVIR',(A0)+
  88.     MOVE.L    $100.W,    (A0)+    ; alter Vektor
  89.     MOVE.L    #$07C0700,(A0)+    ; ORI #$0700,SR
  90.     MOVE.W    #$4EB9,    (A0)+    ; JSR out
  91.     MOVE.L    #out,    (A0)+
  92.     MOVE.W    #$4E73,    (A0)+    ; RTE
  93.     MOVE.L    #int,    $100.W
  94.  
  95.     BCLR    #0,    $FFFFFA03.W
  96.     BCLR    #0,    $FFFFFA05.W
  97.     BSET    #0,    $FFFFFA09.W    ; Anschalten
  98.     BSET    #0,    $FFFFFA15.W    ; Maskieren
  99.     MOVE.B    #$FE,    $FFFFFA11.W
  100.  
  101.     MOVE.B    #14,    $FFFF8800.W    ; Strobe aus
  102.     MOVE.B    $FFFF8800.W,D0
  103.     BSET    #5,    D0
  104.     MOVE.B    D0,    $FFFF8802.W
  105.     MOVEQ    #0,    D0
  106.  
  107.  
  108. ;* Ab hier Druck *
  109. ;* Byte ausgeben *
  110. out:    SUBQ.L    #1,    anzahl    ; Schon fertig?
  111.     BMI    ende
  112.     MOVEM.L    D0/A0,    -(A7)
  113. ;    BCLR    #0,    $FFFFFA15.W    ; Demaskieren
  114.     MOVE.B    #15,    $FFFF8800.W
  115.     MOVE.L    ptr,    A0
  116.     MOVE.B    (A0)+,    $FFFF8802.W
  117.     MOVE.L    A0,    ptr
  118.  
  119.     MOVE    wait1,    D0
  120. .time1:    NOP
  121.     DBRA    D0,    .time1
  122.  
  123.     MOVE.B    #14,    $FFFF8800.W
  124.     MOVE.B    $FFFF8800.W,D0
  125.     BCLR    #5,    D0
  126.     MOVE.B    D0,    $FFFF8802.W
  127.     BSET    #5,    D0
  128.     MOVE.W    D0,    A0
  129.  
  130.     MOVE    wait2,    D0
  131. .time2:    NOP
  132.     DBRA    D0,    .time2
  133.     MOVE.W    A0,    D0
  134.     MOVE.B    D0,    $FFFF8802.W
  135.  
  136.     MOVEM.L    (A7)+,    D0/A0
  137. ;    BSET    #0,    $FFFFFA15.W    ; Maskieren
  138.     MOVE.B    #$FE,    $FFFFFA11.W
  139.     RTS
  140.  
  141. ;* Beenden *
  142. ende:    MOVE.L    old_vec,$100.W
  143.     BCLR    #0,    $FFFFFA09.W    ; Ausschalten
  144.     BCLR    #0,    $FFFFFA15.W    ; Demaskieren
  145.     CLR.L    old_vec
  146.     RTS
  147.  
  148.  
  149.  
  150.     DATA
  151.     DC.B    'PATCH:'
  152. wait1:    DC.W    6
  153. wait2:    DC.W    100
  154. killed:    DC.B    27,'H ',7,0
  155.  
  156.     BSS
  157. anzahl:    DS.L    1
  158. ptr:    DS.L    1
  159.  
  160. ;* Die Interuptroutine */
  161. xbra:    DS.L    2
  162. old_vec:DS.L    1
  163. int:    DS.L    3
  164.